package com.hunter11;

import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Scanner;

public class Bookjiaoyi {

	// 定义集合存储书店所有图书信息
	static ArrayList<Books> shujia = new ArrayList();

	public static void main(String[] args) throws IOException {
		init(); // 调用书架初始化方法完成书店图书的初始化
		// 循环输出书架的所有信息
		for (Books s : shujia) {
			System.out.println(s.toString());
		}

		while (true) {
			System.out.println("请输入图书编号：");
			Scanner sc = new Scanner(System.in);
			int id = sc.nextInt();
			Books b = searchId(id);
			// 判断图书是否存在
			if (b != null) {
				System.out.println(b.toString());
				// 判断库存
				System.out.println("请输入购买数量");
				int num = sc.nextInt();
				if (num < b.getNumber()) {
					System.out.println("库存充足，可以购买");
					b.setNumber(b.getNumber() - num);// 修改库存 (修改为购买后剩余库存)
					System.out.println(b.getName() + "还剩余：" + b.getNumber());
					// 将购买信息保存在本地文件 将购买的图书信息封装在一个Books中
					Books buy = new Books(b.getId(), b.getName(), b.getPrice(), num, b.getPrice() * num,
							b.getPublish());// num 为购买数量， b.getPrice()*num 为购买总价
					// 此处调用方法完成保存，该方法先写名字等下创建
					saveBook(buy);
					b.setNumber(b.getNumber() - num);
				} else {
					System.out.println("库存不足");
				}
			} else {
				System.out.println("图书编号输入错误");
			}
		}
	}

	// 定义方法完成书店所有图书的初始化（向集合中添加元素）
	static void init() {
		Books goods1 = new Books(101, "Java基础入门", 44.50, 100, 4450.00, "清华大学出版社");
		Books goods2 = new Books(102, "C基础入门", 34.52, 100, 3452.00, "北京大学出版社");
		Books goods3 = new Books(103, "python基础入门", 51.50, 100, 5150.00, "南京大学出版社");
		Books goods4 = new Books(104, "vue基础入门", 60.50, 100, 6050.00, "牛魔大学出版社");
		shujia.add(goods1);
		shujia.add(goods2);
		shujia.add(goods3);
		shujia.add(goods4);
	}

	// 定义方法查询某图书编号是否存在
	static Books searchId(int id) {
		// 在集合中查询是否存在该编号的图书
		for (Books s : shujia) {
			if (s.getId() == id) {
				return s;
			}
		}
		return null;
	}

	// 定义方法完成购买图书信息的保存
	static void saveBook(Books b) throws IOException {
		// 拼凑文件名称
		LocalDate now = LocalDate.now();
		String name = "销售记录" + now.toString() + ".csv";// 拼接文件名
		// 定义StringBuffer拼凑文件内容
		StringBuffer str = new StringBuffer();
		BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(name));
		String biaotou = "图书id,图书名称,图书单价";
		str.append(biaotou);// 添加表头
		str.append("\r\n");// 添加回车换行
		str.append(b.getId() + ",");
		str.append(b.getName() + ",");
		str.append(b.getPrice() + ",");
		String str2 = str.toString();
		byte[] b2 = str2.getBytes();
		out.write(b2);
		out.close();
	}

}
